
*** Marek Brzezinski ****************************
*** DEVIANT COHESION AND UNAUTHORIZED ATROCITIES:
*** EVIDENCE FROM THE AMERICAN WAR IN VIETNAM ***

clear

*** IMPORT DATA
* The NVVRS survey data used in the article is publicly available on the website of the National Archives: https://catalog.archives.gov/id/628289
* The survey interview questionnaire can be accessed here: https://www.ptsd.va.gov/professional/articles/article-pdf/nvvrs_vol3.pdf
* Datafile codebooks are available here: https://s3.amazonaws.com/NARAprodstorage/opastorage/live/79/9539/953979/content/arcmedia/electronic-records/rg-015/NVVRS/169.1-8AD.pdf and https://s3.amazonaws.com/NARAprodstorage/opastorage/live/95/9539/953995/content/arcmedia/electronic-records/rg-015/NVVRS/169.9-18AD.pdf 
* Using the iformation in these codebooks, the following code imports and merges the relevant variables from different segments of raw NVVRS survey data:
 
* Segment G
infix id 5-10 g1 19-23 g2 24-25 g46 632-633 g47 658-659 g47b 684-685 g47c_1 686-687 g47c_2 688-689 g47c_3 690-691 g47c_4 692-693 g48 710-711 g48b 736-737 using https://s3.amazonaws.com/NARAprodstorage/opastorage/live/87/9539/953987/content/arcmedia/electronic-records/rg-015/NVVRS/NNVRS.G 
sort id
save d:segmentG

* Segment H
clear 
infix id 5-10 h12 207-208 h12a 234-235 using https://s3.amazonaws.com/NARAprodstorage/opastorage/live/88/9539/953988/content/arcmedia/electronic-records/rg-015/NVVRS/NNVRS.H
sort id
save d:segmentH

* Segment J
clear
infix id 5-10 j3_yr 35-36 j5 41-42 j7_1_1 193-194 j7_2_1 195-196 j7_3_1 197-198 j7_4_1 199-200 j7_5_1 201-202 j9 357-358 j16_a 608-609 j22 688-689 j23 692-693 j34 931-932 j47 1113-1114 j47a 1115-1116 j47b 1117-1118 j47c 1119-1120 j47d 1121-1122 j47e 1123-1124 j47f 1125-1126 j62_e 1420-1421 j62_h 1426-1427 using https://s3.amazonaws.com/NARAprodstorage/opastorage/live/89/9539/953989/content/arcmedia/electronic-records/rg-015/NVVRS/NNVRS.J
sort id
save d:segmentJ

* Segment SR
clear
infix id 5-10 j66e 241-242  using https://s3.amazonaws.com/NARAprodstorage/opastorage/live/95/9539/953995/content/arcmedia/electronic-records/rg-015/NVVRS/NNVRS.SR
sort id
save d:segmentSR

* Segment A
clear
infix id 5-10 a2_yr 35-36 a4 46-47 using https://s3.amazonaws.com/NARAprodstorage/opastorage/live/79/9539/953979/content/arcmedia/electronic-records/rg-015/NVVRS/NNVRS.A
sort id
save d:segmentA

* Merge
clear
use d:segmentA
merge 1:1 id using d:segmentG
drop _merge
merge 1:1 id using d:segmentH
drop _merge
merge 1:1 id using d:segmentJ
drop _merge
merge 1:1 id using d:segmentSR
drop _merge
save d:NVVRSdata

clear
use d:NVVRSdata


*** RESTRICT SAMPLE TO RESPONDENTS WHO WERE STATIONED IN VIETNAM
gen VV = 0
replace VV = 1 if j7_1_1==1 | j7_2_1==1 | j7_3_1==1 | j7_4_1==1 | j7_5_1==1 
drop if VV==0



*** GENERATE TABLE 1
gen Exposure_to_mutilation = "1) Not at all" if j66e==1
replace Exposure_to_mutilation = "2) Knew/heard about it" if j66e==2
replace Exposure_to_mutilation = "3) Saw it" if j66e==3
replace Exposure_to_mutilation = "4) Unit participated" if j66e==4
replace Exposure_to_mutilation = "5) I participated" if j66e==5 
replace Exposure_to_mutilation = "6) I was responsible" if j66e==6
** Column I: All Vietnam veterans
tab Exposure_ if j66e<7
** Column II: Veterans serving mainly or completely in combat roles (using variable j9)
tab Exposure if j66e <7 & (j9==1 | j9==2)



*** GENERATE VARIABLES

** main DEPENDENT VARIABLE - individual participation in mutilation
drop if j66e > 6
gen mutil_indiv = 0
replace mutil_indiv = 1 if j66e > 4

** alternative DV - individual or unit-level participation in mutilation
gen mutil2 = 0
replace mutil2 = 1 if j66e>3


** INDEPENDENT VARIABLES:

* close friends killed
gen close_friends_killed = 0 if j47!=98 & j47f!=98
replace close_friends_killed = 1 if j47f==4
replace close_friends_killed = 2 if j47f==3
replace close_friends_killed = 3 if j47f==2
replace close_friends_killed = 4 if j47f==1
*NB using this coding, I code as 0 all respondents who either did not know any Americans killed in Vietnam (question j47), did not have any close personal friends killed (question j47b), did not have any close friends killed who were members of their unit (question j47d), or reported never having seen close friends from their unit killed (see question j47f)

* saw Americans mutilated
gen saw_mutilated = 0 if j62_e!=94 & j62_e!=97 & j62_e!=98 & j62_h!=94 & j62_h!=98
replace saw_mutilated = 1 if j62_h==3 & j62_e!=94 & j62_e!=97 & j62_e!=98 & j62_h!=94 & j62_h!=98

* unit cohesion
gen unit_cohesion = 0 if j23<10
replace unit_cohesion = 4 if j23==1
replace unit_cohesion = 3 if j23==2
replace unit_cohesion = 2 if j23==3
replace unit_cohesion = 1 if j23==4
replace unit_cohesion = 0 if j23==5

* unit cohesion (alternative measure)
gen cohesion2 = 0 if j22<10
replace cohesion2 = 1 if j22==2
replace cohesion2 = 2 if j22==3
replace cohesion2 = 3 if j22==4
replace cohesion2 = 4 if j22==5

* decline in discipline
gen discipline_decline = 0 if j16_a<10
replace discipline_decline = 1 if j16_a<5

* cohesion X decline in discipline
gen unitXdiscipline = unit_cohesion*discipline

* domestic violence
gen domestic_violence = 0 if g48<3 & g48b!=97 & g48b!=98
replace domestic_violence = 0 if g48==1 & g48<3 & g48b<10
replace domestic_violence = 1 if g48b==4 & g48<3 & g48b<10
replace domestic_violence = 2 if g48b==3 & g48<3 & g48b<10
replace domestic_violence = 3 if g48b==2 & g48<3 & g48b<10
replace domestic_violence = 4 if g48b==1 & g48<3 & g48b<10

* family mental illness
gen mental_illness = 0 if g46<10
replace mental_illness = 1 if g46==2

* parental imprisonment
gen prison = 0 if g47<10
replace prison = 1 if g47b==2 & (g47c_1==1 | g47c_2==2 | g47c_4==4)   

* race
gen white = 0 if a4<10
replace white = 1 if a4==6
gen black = 0 if a4<10
replace black = 1 if a4==5

* rural

gen rural = 0 if g2<10
replace rural = 1 if g2==1

**Data on ant-Black lynching is derived from the Bailey and Tolnay (2015) and from Seguin and Rigby 2019 
** Bailey and Tolnay provide data on lynching victims in ten southern states based on Beck and Tolnay (1990) in Appendix A7.1
** Seguin & Rigby 2019 augment this inventory with data on lynchings throughout the US - see https://osf.io/kr8yc/
**I code only events in which victims are reported as Black males between 1882 and 1931 , and aggregate all events in the dataset to U.S. Census divisions, see https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf 
**this results in the following total events per division

*New England: 0 (Seguin & Rigby)
*Middle Atlantic: 4 (Seguin & Rigby)
*East North Central: 36 (Seguin & Rigby)
*West North Central 85 (Seguin & Rigby)
*South Atlantic: 855 (Bailey & Tolnay) + 123 (Seguin & Riby) = 978
*East South Central: 1034 (Bailey & Tolnay) + 2 (Seguin & Rigby) = 1036
*West South Central: 475 (Bailey & Tolnay) + 333 (Seguin & Rigby) = 808
*Mountain: 10 (Seguin & Rigby)
*Pacific: 3 (Seguin & Rigby)

* respondents are assigned U.S. Census divisions using variable g1 (respondents reporting having grown up outside of the US are coded 0)
gen lynch = 0 if g1<90
replace lynch = 4 if g1==12
replace lynch = 36 if g1==21
replace lynch = 85 if g1==22
replace lynch = 974 if g1==31
replace lynch = 1036 if g1==32
replace lynch = 808 if g1==33
replace lynch = 14 if g1==41
replace lynch = 3 if g1==42

gen lynch2 = lynch/100
gen lynch2Xwhite = lynch2*white


** CONTROL VARIABLES:

* combat exposure
gen combat_exposure = 0 if j34<10
replace combat_exposure = 3 if j34==4
replace combat_exposure = 2 if j34==3
replace combat_exposure = 1 if j34==2
replace combat_exposure = 0 if j34==1

* duration
gen duration = j5 if j5<90 

* age
gen age = a2
gen AGE = j3_yr - age if j3_yr<90

* post_tet
gen POST_TET = 0 if j3_yr<90
replace POST_TET = 1 if j3_yr==68 | j3_yr==69 | j3_yr==70 | j3_yr==71 |  j3_yr==72 |  j3_yr==73  |  j3_yr==74 

* drafted
gen draft = 0 if h12<10
replace draft = 1 if h12a==3


*** SUMMARY STATISTICS
sum mutil_i close saw unit_c disc domestic mental prison black white lynch2 rural combat_e duration POST_TET AGE cohesion2


*** GENERATE FIGURE 1

** a) REVENGE & DEVIANT COHESION (also Table A5 in online appendix)

* Column I
logit mutil_i close saw
est store m1
logit mutil_i close saw combat_e duration AGE POST_TET
est store m2

* Column II
logit mutil_i unit_cohesion  
est store m3
logit mutil_i unit_cohesion  combat_e duration AGE POST_TET
est store m4

* Column III
logit mutil_i discipline 
est store m5
logit mutil_i discipline combat_e duration AGE POST_TET
est store m6

* Column IV
logit mutil_i unit_cohesion discipline unitXdiscipline
est store m7
logit mutil_i unit_cohesion discipline unitXdiscipline combat_e duration AGE POST_TET
est store m8

* coefficient plot
coefplot (m1, msymbol(O) mlcolor(gs5) mfcolor(white) ciopts(lcolor(gs5)) label(without controls)) (m2, msymbol(O) mlcolor(gs5) mfcolor(gs5) ciopts(lcolor(gs5)) label(with controls)),  bylabel("I")|| ///
 m3 m4,  bylabel("II") || m5 m6,  bylabel("III") || m7 m8, bylabel("IV")||  ///
 , xline(0)  drop(_cons) ///
 coeflabels(close_friends_killed = "Close friends killed" saw_mutilated = "Witnessed Americans mutilated" unit_cohesion = "Unit social cohesion" ///
 discipline_decline = "Decline in discipline" unitXdiscipline = "Unit cohesion X decline in discipline"  combat_exposure = "Combat exposure" duration = "Deployment duration" AGE = "Age" POST_TET = "Post-Tet") ///
 order(close_friends_killed saw_mutilated unit_cohesion discipline_decline unitXdiscipline  combat_exposure duration POST_TET AGE) byopts( cols(4) xrescale graphregion(color(white)))  subtitle(, size(medium))
 

** b) BAD APPLES (also Table A6 in online appendix)

* Column I 
logit mutil_i domestic_violence 
est store m9
logit mutil_i domestic_violence combat_e duration AGE POST_TET
est store m10

* Column II
logit mutil_i mental_illness 
est store m11
logit mutil_i mental_illness combat_e duration AGE POST_TET
est store m12

* Column III
logit mutil_i prison 
est store m13
logit mutil_i prison combat_e duration AGE POST_TET
est store m14

* Column IV
logit mutil_i domestic_violence mental_illness prison
est store m15
logit mutil_i domestic_violence mental_illness prison  combat_e duration AGE POST_TET
est store m16

* coefficient plot
coefplot (m9, msymbol(O) mlcolor(gs5) mfcolor(white) ciopts(lcolor(gs5)) label(without controls)) (m10, msymbol(O) mlcolor(gs5) mfcolor(gs5) ciopts(lcolor(gs5)) label(all Vietnam vets, with controls)) ,  bylabel("I")|| ///
 m11 m12,  bylabel("II") || m13 m14, bylabel("III")|| m15 m16 , bylabel("IV")|| ///
 , xline(0)  drop(_cons) ///
 coeflabels(domestic_violence = "Domestic abuse" mental_illness = "Family mental illness" prison = "Parental imprisonment" ///
  combat_exposure = "Combat exposure" duration = "Deployment duration" AGE = "Age" POST_TET = "Post_Tet") ///
 order(domestic_violence mental_illness prison parental_death combat_exposure duration POST_TET AGE) byopts( cols(5) xrescale graphregion(color(white) ))  subtitle(, size(medium)) 
  
  
** c) RACIALIZED VIOLENCE & HUNTING (also Table A7 in online appendix)

* Column I
logit mutil_i black
est store m1
logit mutil_i black combat_e duration AGE POST_TET
est store m2

* Column II
logit mutil_i white lynch2 lynch2Xwhite
est store m3
logit mutil_i white lynch2 lynch2Xwhite combat_e duration AGE POST_TET
est store m4

* Column III
logit mutil_i rural
est store m5
logit mutil_i rural combat_e duration AGE POST_TET
est store m6

* coefficient plot
coefplot (m1, msymbol(O) mlcolor(gs5) mfcolor(white) ciopts(lcolor(gs5)) label(without controls)) (m2, msymbol(O) mlcolor(gs5) mfcolor(gs5) ciopts(lcolor(gs5)) label(with controls)) ,  bylabel("I")|| ///
 m3 m4 ,  bylabel("II") || m5 m6, bylabel("III")||  ///
 , xline(0)  drop(_cons) ///
 coeflabels(rural = "Rural" white = "White" black = "Black" lynch2 = "Division-level lynchings" lynch2Xwhite = "Division-level lynchings X White" ///
  combat_exposure = "Combat exposure" duration = "Deployment duration" AGE = "Age" POST_TET = "Post-Tet") ///
 order(black white lynch2 lynch2Xwhite rural combat_exposure duration POST_TET AGE) byopts( cols(4) xrescale graphregion(color(white)))  subtitle(, size(medium))

 
*** GENERATE FIGURE 2
logit mutil_i c.unit_cohesion##discipline combat_e duration AGE POST_TET
margins disci, at(unit_cohesion=(0(1)4))
marginsplot, title("") graphregion(color(white)) xlabel(0 "not  at all" 1 "not very" 2 "fairly" 3 "very" 4 "extremely") aspect(0.80) xtitle("Unit cohesion: 'How close were you with people in your unit?'") ytitle("Pr(Mutilation)")

 
 
*** ROBUSTNESS CHECKS

* Table A8: Controlling for alternative explanations

logit mutil_i close saw unit_cohesion discipline unitXdiscipline domestic mental prison black white lynch2 lynch2X rural
logit mutil_i close saw unit_cohesion discipline unitXdiscipline domestic mental prison black white lynch2 lynch2X rural combat_e duration POST_TET AGE 

* Table A9: replication of Table A4 with penalized maximum likelihood estimator

firthlogit mutil_i close saw
firthlogit mutil_i close saw combat_e duration POST_TET AGE

firthlogit mutil_i unit_cohesion  
firthlogit mutil_i unit_cohesion  combat_e duration POST_TET AGE

firthlogit mutil_i discipline 
firthlogit mutil_i discipline combat_e duration POST_TET AGE

firthlogit mutil_i unit_cohesion discipline unitXdiscipline
firthlogit mutil_i unit_cohesion discipline unitXdiscipline combat_e duration POST_TET AGE

* Table A10: replication of Table A5 with penalized maximum likelihood estimator

firthlogit mutil_i domestic_violence 
firthlogit mutil_i domestic_violence combat_e duration POST_TET AGE

firthlogit mutil_i mental_illness 
firthlogit mutil_i mental_illness combat_e duration POST_TET AGE

firthlogit mutil_i prison 
firthlogit mutil_i prison combat_e duration POST_TET AGE

firthlogit mutil_i domestic_violence mental_illness prison 
firthlogit mutil_i domestic_violence mental_illness prison combat_e duration POST_TET AGE

* Table A11: replication of Table A6 with penalized maximum likelihood estimator
  
firthlogit mutil_i black
firthlogit mutil_i black combat_e duration AGE POST_TET

firthlogit mutil_i white lynch2 lynch2Xwhite
firthlogit mutil_i white lynch2 lynch2Xwhite combat_e duration AGE POST_TET

firthlogit mutil_i rural
firthlogit mutil_i rural combat_e duration AGE POST_TET

* Table A12: replication of Table A4 with alternative DV
 
logit mutil2 close saw
logit mutil2 close saw combat_e duration POST_TET AGE

logit mutil2 unit_cohesion  
logit mutil2 unit_cohesion  combat_e duration POST_TET AGE

logit mutil2 discipline 
logit mutil2 discipline combat_e duration POST_TET AGE

logit mutil2 unit_cohesion discipline unitXdiscipline
logit mutil2 unit_cohesion discipline unitXdiscipline combat_e duration POST_TET AGE

* Table A13: replication of Table A5 with alternative DV

logit mutil2 domestic_violence 
logit mutil2 domestic_violence combat_e duration POST_TET AGE

logit mutil2 mental_illness 
logit mutil2 mental_illness combat_e duration POST_TET AGE

logit mutil2 prison 
logit mutil2 prison combat_e duration POST_TET AGE

logit mutil2 domestic_violence mental_illness prison 
logit mutil2 domestic_violence mental_illness prison combat_e duration POST_TET AGE

* Table A14: replication of Table A6 with alternative DV
  
logit mutil2 black
logit mutil2 black combat_e duration AGE POST_TET

logit mutil2 white lynch2 lynch2Xwhite
logit mutil2 white lynch2 lynch2Xwhite combat_e duration AGE POST_TET

logit mutil2 rural
logit mutil2 rural combat_e duration AGE POST_TET

* Table A15: replication of Figure 1a) Columns II & IV with alternative measure of cohesion

gen cohesion2Xdiscipline = cohesion2*discipline
 
logit mutil_i cohesion2  
logit mutil_i cohesion2  combat_e duration POST_TET AGE

logit mutil_i cohesion2 discipline cohesion2Xdiscipline
logit mutil_i cohesion2 discipline cohesion2Xdiscipline combat_e duration AGE POST_TET

* Table A16: draftees & mutilation

logit mutil_i draft  
logit mutil_i draft combat_e duration POST_TET AGE

gen draftXdiscipline_decline = draft*disci

logit mutil_i draft discipline draftX 
logit mutil_i draft discipline draftX combat_e duration POST_TET AGE












